Asynchronous Active Record migrations
Spotifyのエンジニアによる記事
https://kirshatrov.com/2018/04/01/async-migrations/
邦訳 https://techracho.bpsinc.jp/hachi8833/2018_06_12/56531
データベースのマイグレーションとアプリケーションのデプロイの分離(Keep database deploys separate)のための手法
デプロイの一環としてマイグレーションを走らせるアプローチの課題
マイグレーション失敗時にデプロイを取り消すかの判断が難しい
利用しているデータベースが複数ある場合それぞれのデータベースにマイグレーションを適用しなければならなくなる
マイグレーションに時間がかかると(数時間)、その間デプロイを完了できなくなる
非同期マイグレーション
「デプロイが終わってから最終的に適用する」
ohbarye.icon デプロイするコードは互換性があることを保証する
「制御は人間が行う」
Shopifyならではの理由
Shopifyでは数百にのぼるデータベースシャーディングを扱っており、スキーマ変更のたびにシャーディングひとつひとつでマイグレーションを実行しなければなりません。マイグレーション手順がデプロイスクリプトの一部に組み込まれていると、リリースプロセスがぐらついてしまうでしょう。Shopifyでは代わりに、リリースの完了後に最終的に提供される「非同期マイグレーション」を用いています。非同期マイグレーションは、Shopifyが誇る1日50回を超えるリリースを支える重要な機能のひとつです。